// ============================================================ //
// ============================================================ //
//
// @Group       : QiXin Supply Chain Team
// @Author      : ZhiQiang Cheng
// @Date        : 2024-07-15
// @Description : 信号任务处理器
//
// ============================================================ //
// ============================================================ //

package job

import (
	"os"
	"sync/atomic"
)

func Run(f func(*atomic.Bool)) chan os.Signal {
	ch := make(chan os.Signal, 1)

	running := new(atomic.Bool)
	running.Store(true)

	go func() {
		f(running)
		close(ch)
	}()

	go func() {
		<-ch
		running.Store(false)
	}()

	return ch
}
